package com.arron.juc;

public class SynchronizedDemo {

    static Object obj = new Object();

    //jdk6以后synchronized锁的优化  无锁---》偏向锁--》轻量级锁--》重量级锁


    //锁的消除 ,JIT编译器会认为下面加的锁不会被多个线程公用或者产生竞争，不会生成机器码，编译时会直接将synchronized去掉
    public void test1(){

        Object o = new Object();

        synchronized (o){

            System.out.println("asdasa");
        }

    }
    //锁的粗化，以下代码会被合并为一块大的同步代码块，减少锁的获取与释放
    public void test2(){


        synchronized (obj){

            System.out.println("12121");
        }

        synchronized (obj){

            System.out.println("344545");
        }

        synchronized (obj){

            System.out.println("89889");
        }

    }






}
